#!/bin/bash

_cli_=$0
_basedir_=`readlink -f $(dirname $0)`
_script_=`basename $0`
_cmd_=usage

install() {
	local _id=
	local _prefix=$HOME
	local _http=true
	local _master=false
	local _data=false
	TEMP_ARGS=`getopt -o i:m::d::h::p: --long id:,master::,data::,http::,prefix:,help \
	     -n "$_cli_" -- $@`
	if [ $? != 0 ] ; then
		echo "哦，哥们，咱实现的功能有限，不能瞎试！（其实你可以试着运行：$_cli_ --help）" >&2
		exit 1
	fi

	eval set -- "$TEMP_ARGS"

	while true; do
		case "$1" in
			-p|--prefix)
				_prefix=`readlink -f $2`
				shift 2
			;;
			-i|--id)
				_id=$2
				shift 2
			;;
			-m|--master) 
				if [ -z $2 ] || [ $2 = true ] || [ $2 = 1 ]; then _master=true; fi
				shift 2
			;;
			-d|--data)
				if [ -z $2 ] || [ $2 = true ] || [ $2 = 1 ]; then _data=true; fi
				shift 2
			;;
			-h|--http)
				if [ -z $2 ] || [ $2 = true ] || [ $2 = 1 ]; then _http=true; fi
				shift 2
			;;
			--help)
				usage
				exit 0
			;;
			--)
				break;
			;;
			*)
				usage
				break
			;;
		esac
	done
	if [ -z $_id ] || [ -z $_prefix ]; then
		echo "必须提供正确的id和安装路径！请参考:$_cli_ help"
		exit 1
	fi
	local _prefix="$_prefix/${_id}.es"
	if [ -d $_prefix ]; then
		echo "安装目录已存在，将不做任何操作！"
		exit 1
	fi
	mkdir -p "$_prefix"
	cp -r -T "$_basedir_/prototype" "$_prefix"
	sed -i -e "
	s/{1}/$_id/
	s/{2}/$_master/
	s/{3}/$_data/
	s/{4}/$_http/
	" "$_prefix/config/elasticsearch.yml" && echo "安装完成！"
}

create() {
	local _user=es
	local _index=
	eval set -- "`getopt -o u::i: --long user::,index: -n "$_cli_ create" -- $@`"
	while true; do
		case "$1" in
			-u|--user)
				if [ ! -z $2 ]; then _user=$2; fi
				sudo useradd -c "Elasticsearch" -g wheel -G root -m -r $_user
				break
			;;
			-i|--index)
				if [ -z $2 ]; then
					echo "必须提供索引HTTP地址！"
					exit 1
				fi
				_index=$2
				shift 2
				_create_index $_index
				break
			;;
			*)
				usage
				break
			;;
		esac
	done
}

_create_index() {
	local _tmp=`mktemp`
	sed -f "$_basedir_/indices/resume.sed" "$_basedir_/indices/resume.json" > "$_tmp"
	curl -XPUT "$1?pretty" -d @"$_tmp" && echo "索引已设置完毕！"
	rm "$_tmp"
}

usage() {
	echo "
=================================================================================
=                                                                               =
=              乔大招Elasticsearch服务集群配置工具，v1.0.0，by适然              =
=                                                                               =
=================================================================================

用法：
	$_cli_ install|create|help [OPTIONS]

安装选项（install）
	-i|--id       数字         Elasticsearch节点编号
	-m|--master   true|false   此节点是否为主节点
	-d|--data     true|false   此节点是否为数据节点
	-h|--http     true|false   此节点是否提供HTTP接口
	-p|--prefix   路径         此节点将安装在此路径下
	--help                     显示此帮助

创建选项（create）
	-u|--user     Linux用户ID  创建Elasticsearch服务帐号
	-i|--index    HTTP路径     创建Elasticsearch索引，格式：http://{host}:{port}/{indexName}
"
}

_cmd_=$1
shift

case "$_cmd_" in
	install)
		install $*
	;;
	create)
		create $*
	;;
	*)
		usage
	;;
esac

